/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package carrancao.util;

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * Classe responsável por formatar e manipular datas
 * Assume-se que: dataString equivale a classe String
 *                dataObjeto equivale a classe java.util.Date
 *                dataBancoDeDados equivale a classe java.sql.Date
 * @author Diego Freire Cabral
 */
public class FormatadorData {

    private FormatadorData(){}

    private static final SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");

    public static Date dataStringParaObjeto(String arg) {
        try {
            return arg != null ? formatador.parse(arg) : null;
        } catch (ParseException ex) {
            return null;
        }
    }

    public static String dataObjetoParaString(Date arg) {
        return arg != null ? formatador.format(arg) : "";
    }

    public static java.sql.Date dataObjetoParaDataBancoDeDados(Date arg) {
        return arg != null ? new java.sql.Date(arg.getTime()) :
            new java.sql.Date(new Date().getTime());
    }

    public static Date dataBancoDeDadosParaDataObjeto(java.sql.Date arg) {
        return arg != null ? dataStringParaObjeto(formatador.format(arg)) : null;
    }

    public static String getDataHoje() {
        return formatador.format(new Date());
    }

    public static String getDataComHorarioAtual() {
        Calendar c = Calendar.getInstance();
        String horario = c.get(Calendar.HOUR_OF_DAY) + ":" 
                + c.get(Calendar.MINUTE)
                + ":" + c.get(Calendar.SECOND);

        return getDataHoje() + " " + horario;
    }

    public static boolean validarData(String data) {
        boolean dataOk = false;
        String[] split = data.split("/");
        try {
            int aux = Integer.parseInt(split[0]);
            if ((aux < 1) || (aux > 31)) {
                return dataOk;
            }
            aux = Integer.parseInt(split[1]);
            if ((aux < 1) || (aux > 12)) {
                return dataOk;
            }
            aux = Integer.parseInt(split[2]);
            if (aux < 1900) {
                return dataOk;
            }
        } catch(NumberFormatException nfe) {
            return dataOk;
        }

        dataOk = true;
        return dataOk;
    }

    public static Timestamp getTempoCorrente() {
        return new Timestamp(new Date().getTime());
    }


}
